package com.quanyan.statium.service;

import com.quanyan.common.Plugin.PageObj;
import com.quanyan.statium.api.req.ReqLastGameEvent;
import com.quanyan.statium.api.resp.*;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

/**
 * 运动场对外公开Service信息
 * Created by zhang on 16/5/31.
 */

public interface StadiumOpenService {


    /**
     * 俱乐部获取最新的一个活动,
     *
     * @param clubId
     *
     * @return ResGameEvent
     *
     * */
    ResGameEvent getResGameEventByClubId(Integer clubId);

    /**
     * 俱乐部正在报名的赛事数目
     *
     * @param clubId
     *
     * @return ResGameEvent
     *
     * */
    int countGameEventSigningByClubId(Integer clubId);

    /**
     * 俱乐部正在进行的赛事数目
     *
     * @param clubId
     *
     * @return ResGameEvent
     *
     * */
    int countGameEventPlayingByClubId(Integer clubId);


    /**
     * 获取某场馆下的赛事数目和推荐的比赛
     **
     * @return ResGameEvent
     *
     * */
    ResPlaceGameEventMsg getGameEventListByPlaceIdAndCategoryId(Integer uid, Integer categoryId, Integer placeId);

    /**
     * 个人运动名片列表
     */
    List<RespUserCategory> getUserCategoryList(Integer userId);

    /**
     * 批量查询用户栏目积分
     *
     * @param uidList
     * @param categoryId
     * @return
     */
    List<ResPoints> batchQueryUserCategoryPoints(List<Integer> uidList, Integer categoryId);
    /**
     *  为场馆首页提供赛事推荐
     */
    PageObj<List<GameEventSummary>> getLastGameEventsByPlaceIdAndCategoryId(ReqLastGameEvent reqLastGameEvent);

    /**
     * 通过比赛id查询比赛详情
     * @param gameId
     * @return
     */
    @Deprecated
    RespGameDetail getGameDetailByGameId(Integer gameId);

    /**
     * 比赛完成俱乐部金额结算
     * @param gameId
     * @return
     */
     GameClubMoney getGameClubMoney(Integer gameId);

    /**
     * 通过比赛id查询交易成功的订单列表
     * @param gameId
     * @return
     */
    List<RespGameOrder> queryOrderNoByGameId(Integer gameId);
    /**
     * 俱乐部获取最新的一系例活动(三个以内),
     *
     * @param clubId
     * @param num 表示需要数目
     *
     * @return ResGameEvent
     *
     * */
    List<ResGameEvent> getResGameEventsByClubId(Integer clubId,  int num) throws InvocationTargetException, IllegalAccessException;

    /**
     * 用户报名参加尚未开始的比赛
     */
    RespUserLastGameEvent getUserLastGameEvent(Integer uid);


    /**
     * 用户所参加的比赛场次总数
     */
    int getUserGameEventCount(Integer uid);


}
